package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.yunke.common.base.YunkeBaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;

/**
 * 资金流水实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dzamount_log")
@Schema(description = "资金流水")
public class YunkeAmountLog extends YunkeBaseEntity {

    /**
     * 流水ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description = "流水ID")
    private Long id;

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private Long userId;

    /**
     * 关联订单号
     */
    @Schema(description = "关联订单号")
    private String orderNo;

    /**
     * 交易类型：1-充值 2-提现 3-消费 4-退款 5-佣金 6-奖励
     */
    @Schema(description = "交易类型：1-充值 2-提现 3-消费 4-退款 5-佣金 6-奖励")
    private Integer type;

    /**
     * 金额变动：正数为收入，负数为支出
     */
    @Schema(description = "金额变动：正数为收入，负数为支出")
    private BigDecimal amount;

    /**
     * 变动前余额
     */
    @Schema(description = "变动前余额")
    private BigDecimal beforeBalance;

    /**
     * 变动后余额
     */
    @Schema(description = "变动后余额")
    private BigDecimal afterBalance;

    /**
     * 交易标题
     */
    @Schema(description = "交易标题")
    private String title;

    /**
     * 交易描述
     */
    @Schema(description = "交易描述")
    private String description;

    /**
     * 操作人ID（如果是系统操作则为0）
     */
    @Schema(description = "操作人ID")
    private Long operatorId;

    /**
     * 操作人类型：1-用户 2-管理员 3-系统
     */
    @Schema(description = "操作人类型：1-用户 2-管理员 3-系统")
    private Integer operatorType;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;
} 